package dao;

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import dao.utils.GenericHibernateDAO;
import domain.Clientes;
import domain.Empleados;

public class ClientesDAOImpl extends GenericHibernateDAO implements ClientesDAO {

	public ClientesDAOImpl(Session s) {
		super(s);
	}
	
	public Clientes findByDni(String dni){
		Clientes cliente = (Clientes) getSession().createQuery("from Clientes as e where e.dni = ?").setString(0, dni).uniqueResult();
		return(cliente);
	}
	

	public boolean guardarCliente(String dni, Session sesion, Clientes cliente) {
		Clientes Dni = (Clientes) getSession()
				.createQuery("from Clientes as clie where clie.dni = ?")
				.setString(0, dni).uniqueResult();
		if (Dni != null) {
			return false;
		} else {
			getSession().save(cliente);
			return true;
		}
	}

	@Override
	public void borrarCliente(String dni) {

		Clientes cliente = (Clientes) getSession()
				.createQuery("from Clientes as e where e.dni = ?")
				.setString(0, dni).uniqueResult();
		Integer idClientes = cliente.getIdClientes();
		cliente = (Clientes) getSession().load(Clientes.class,
				(Integer) idClientes);

		// Se realiza el borrado
		getSession().delete(cliente);

	}

	public void modificarCliente(Clientes cliente1) {
		// Clientes cliente = (Clientes)
		// getSession().createQuery("from Clientes as e where e.dni = ?").setString(0,
		// dni).uniqueResult();
		// Integer idClientes=cliente.getIdClientes();
		// cliente= (Clientes) getSession().load(Clientes.class, (Integer)
		// idClientes);

		getSession().update(cliente1);
	}

	@SuppressWarnings("unchecked")
	public List<Clientes> findAll() {
		Query q = getSession().createQuery("From Clientes");
		return q.list();
	}

	@Override
	public void insertarCliente(Session sesion, String dni) {
		// TODO Auto-generated method stub
		
	}

}